﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using PerfilEmpreendedor.Dao.Factory;
using PerfilEmpreendedor.Dao.Interfaces;
using Ext.Net;
using PerfilEmpreendedor.Bo.Model;
using System.Collections;

namespace PerfilEmpreendedor.FrontEnd.UserControls
{
    public partial class CadastrarPartida : System.Web.UI.UserControl
    {
        private DaoFactory daoFactory = DaoFactory.GetInstance;
        protected void Page_Load(object sender, EventArgs e)
        {
          
        }
        public void CarregarTabelas()
        {
            INivelDao nivelDao = daoFactory.GetNivelDao;
            selectNivel.Store[0].DataSource = nivelDao.List("Descricao");
            selectNivel.Store[0].DataBind();
        }
        public void Open()
        {
            Listar();
            windowGrid.Show();
        }
        protected void NovoRegistro(object sender, EventArgs e)
        {
            formCadastro.Reset();
            windowForm.Show();
            windowGrid.Hide();
            CarregarTabelas();

        }
        protected void Listar()
        {
            IPartidaDao PartidaDao = daoFactory.GetPartidaDao;
            storeDados.DataSource = PartidaDao.List();
            storeDados.DataBind();
        }
        protected void Salvar(Object sender, DirectEventArgs e)
        {
            try
            {
                IPartidaDao PartidaDao = daoFactory.GetPartidaDao;
                Partida Partida = new Partida();
                Partida.Id = (!String.IsNullOrEmpty(hiddenId.Text)) ? Convert.ToInt32(hiddenId.Text) : 0;
                Partida.Nivel = new Nivel() { Id = Convert.ToInt32(selectNivel.SelectedItem.Value) };
                Partida.Descricao = txtDescricao.Text.Trim();
                Partida.TempoDeResposta = (int)txtTempo.Number;
                Partida.Iniciada = false;
                Partida.Finalizada = false;

                PartidaDao.Save(Partida);

                windowForm.Hide();
                windowGrid.Show();
                Listar();
                
            }
            catch (Exception ex)
            {
                ExtFunctions.Alert(ex.Message, MessageBox.Icon.ERROR);
            }
        }
        protected void Pesquisar(Object sender, DirectEventArgs e)
        {
            IPartidaDao PartidaDao = daoFactory.GetPartidaDao;
            storeDados.DataSource = PartidaDao.Pesquisar(txtPesquisa.Text.Trim());
            storeDados.DataBind();
        }
        protected void OnGridCommand(Object sender, DirectEventArgs e)
        {
            if (e.ExtraParams["command"].Equals("VerJogadores"))
            {
                IPartidaDao partidaDao = daoFactory.GetPartidaDao;
                Partida partida = partidaDao.Find(Convert.ToInt32(e.ExtraParams["Id"]));
                hiddenId.Text = partida.Id.ToString();
                lblDescricao.Text = partida.Descricao;
                lblNivel.Text = partida.Nivel.Descricao;
                lblTempo.Text = partida.TempoDeResposta.ToString() + " min.";
                lblIniciada.Text = (partida.Iniciada) ? "Sim" : "Não";
                btnIniciar.Disabled = partida.Iniciada;

                if (partida.Finalizada)
                {
                    btnFinalizar.Disabled = true;
                    btnIniciar.Disabled = true;
                }
                else
                {
                    btnFinalizar.Disabled = false;
                }

                ArrayList lst = new ArrayList();
                foreach (var item in partida.Jogadores)
                {
                    lst.Add(new object[] { item.Jogador.Id, item.Jogador.Login,item.Posicao });
                }
                storeJogadores.DataSource = lst;
                storeJogadores.DataBind();
                windowDetalhe.Show();

            }
        }
        protected void IniciarPartida(Object sender, DirectEventArgs e)
        {
           
                IPartidaDao partidaDao = daoFactory.GetPartidaDao;
                partidaDao.IniciarPartida(Convert.ToInt32(hiddenId.Text));
                btnIniciar.Disabled = true;
                try
                {
            }
            catch (Exception ex)
            {
                ExtFunctions.Alert(ex.Message, MessageBox.Icon.ERROR);
            }
            
        }
        protected void CancelarPartida(Object sender, DirectEventArgs e)
        {
            try
            {
                IPartidaDao partidaDao = daoFactory.GetPartidaDao;
                partidaDao.CancelarPartida(Convert.ToInt32(hiddenId.Text));
                btnIniciar.Disabled = true;
                btnFinalizar.Disabled = true;
            }
            catch (Exception ex)
            {
                ExtFunctions.Alert(ex.Message, MessageBox.Icon.ERROR);
            }
        }
    }
}